        html { scroll-behavior: smooth; }
        /* Animation keyframes for the ping effect */
        @keyframes ping {
            75%, 100% { transform: scale(2); opacity: 0; }
        }
        .animate-ping { animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite; }
        
        .fade-in {
            animation: fadeIn 0.3s ease-in-out;
        }
        
        @keyframes fadeIn {
            from { opacity: 0; transform: translateY(10px); }
            to { opacity: 1; transform: translateY(0); }
        }

        /* Image Zoom Styles */
        .zoomable {
            cursor: zoom-in;
            transition: transform 0.3s ease, box-shadow 0.3s ease;
        }
        .zoomable:hover {
            transform: scale(1.02);
        }
        .zoomed {
            position: fixed;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%) scale(1) !important;
            max-width: 90vw;
            max-height: 90vh;
            z-index: 1000;
            box-shadow: 0 0 0 100vmax rgba(0,0,0,0.85);
            object-fit: contain !important;
            cursor: zoom-out;
            width: auto !important;
            height: auto !important;
        }

        /* Custom class for the hero background */
        .hero-bg {
            /* Gradient set to 0.65 opacity to make the background image appear faint/dark */
            background-image: linear-gradient(rgba(0, 0, 0, 0.65), rgba(0, 0, 0, 0.65)), url('/img/herobg.jpg');
            background-size: cover;
            background-position: center;
        }